#ifndef __GPS_H__
#define __GPS_H__


#undef U1_DEFINED
#define U1_DEFINED
   typedef unsigned char U1;
   typedef unsigned char L1;	   // 1 byte logical (TRUE or FALSE only)

   // define U2 to be at least 16 bits

#undef U2_DEFINED
#define U2_DEFINED
typedef unsigned short U2;
typedef unsigned short L2;		// 2 byte logical (TRUE or FALSE only)

   // define U4 to be at least 32 bits

#undef U4_DEFINED
#define U4_DEFINED				// UINT_MAX is the maximum value of unsigned int
typedef unsigned int U4;
typedef unsigned int L4;		// 4 byte logical (TRUE or FALSE only)

typedef unsigned long long U8;
typedef unsigned long long L8;

   // ----------------------------------------

   // signed types

   // define I1 to be exactly 8 bits

#undef I1_DEFINED
#define I1_DEFINED
typedef signed char I1;

   // define I2 to be at least 16 bits

#undef I2_DEFINED
#define I2_DEFINED
typedef signed short I2;

   // define S32 to be at least 32 bits

#undef I4_DEFINED
#define I4_DEFINED
typedef signed int I4;
typedef signed long long I8;
// define TRUE and FALSE
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif

// Ensure NULL is defined
#ifdef NULL
#undef NULL
#endif
#define NULL 0

// Define real floating point number, single and double precision
typedef float R4;				// 4 byte floating point
typedef double R8;				// 8 byte floating point

// Define ASCII character type
typedef char CH;				// ASCII character

typedef U1 BL;					// boolean logical (TRUE or FALSE only)

#endif
